package com.xrui.xml;

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.FileReader;

//import org.apache.xerces.parsers.SAXParser;

public class xmlparser  extends DefaultHandler

{
    //我们在这里创建一个名为TestSAX2的类，这个类继承了DefaultHandler类。
    public static void main( String [] x )
    {
        try
        {
            //下面一行代码创建XMLReader
            //XmlReader oXReader = XMLReaderFactory. createXMLReader ( "org.apache.xerces.parsers.SAXParser);
            XMLReader oXReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
            //XMLReader oXReader = XMLReaderFactory.createXMLReader( );

            //XMLReader oXReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
            //上面这一行是使用SUN的JAXP接口的代码。

            xmlparser handler = new xmlparser();
            //上面一行创建一个TestSAX2的实例

            oXReader.setFeature("http://xml.org/sax/features/namespaces",true);
            //上面一行打开了名空间功能。

            oXReader.setContentHandler( handler );
            //上面一行设置内容处理器

            oXReader.setDTDHandler(handler);
            //上面一行设置DTD处理器

            oXReader.setEntityResolver(handler);
            //上面一行设置EntityResolver

            oXReader.parse( new InputSource( new FileReader( "test.xml") ) );
            //上面一行进行解析。

        }

        catch( Exception e )//错误处理

        {

            e.printStackTrace();

        }

    }

    //constructor

    public xmlparser ()
    {
        super();
    }

    //后面是重载的DefaultHandler类的处理方法。
    public void endElement( String uri, String localName, String qName)
    {
        System.out.println("end of a Element ==> uri:"+uri+"; localName:"+localName+"; qName:"+qName);
    }

    public void startPrefixMapping(String prefix, String uri)
    {
        System.out.println("start of Prefix Mapping ==>prefix:"+prefix+"; uri:"+uri);
    }

    public void endPrefixMapping(String prefix)
    {
        System.out.println("end of PrefixMapping==>prefix:"+prefix );
    }

    public void notationDecl(String name,String publicId,String systemId)
    {
        System.out.println("notationDecl==> name:"+name+"; publicID"+publicId+"; systemID:"+systemId);

    }

}
